インフラエンジニア向け、Cisco CSR1000V on AWS を使ってみる
こんにちは、梶です。
本日はインフラエンジニア向け、第2弾として、Cisco CSR1000V on AWS を使ってみたいと思います。
Cisco Cloud Service Router(CSR)とは
Cisco Cloud Service Router (CSR) 1000Vとは、ソフトウェアルータです。他にも有名なものでいうとVyattaや、SEIL/x86などがあります。
詳細はここ
*ESXiのみと書いてありますが、現在は複数のハイパーバイザーに対応しているようです。
VMware ESXi (5.0, 5.1)、Citrix XenServer (6.0.2, 6.1)、RedHat KVM (RHEL 6.3, RHEV 3.1)
Amazon Web Services (AWS)
CSR1000Vのライセンスは以下の組み合わせになってます。
期間→1年、3年、5年
機能→Standard/Advanced/Premium
スループット→10 Mbps、25 Mbps、50 Mbps
上記に応じて、性能上限値も異なりますので、ご注意ください。
詳細が記載されております。
NetScaler
でも記載しましたが、「従量課金方式」で構築した場合と「BYOL (Bring Your Own License)方式」の場合でサポート条件が異なると思われますので、代理店様へ確認ください。
AWSの機能では?
Amazon VPN、Amazon VPC Peeringなどでも可能ですが、機能制限があります。
ソフトウェアルータで、Amazon VPN、Amazon VPC Peeringの機能制限を打破するため利用されているようです。*事前に検証してから利用しましょう。
以下も参考になります。
OpenswanでVPN接続してIPSec通信をやってみた。
Amazon VPC Peeringの技術的考察と留意点
検証について
お金をかけず、検証するため、以下の内容で実施しました。
・Cisco CSR 1000Vのライセンスは、60日間の試用版ライセンスでテストします。
・通信試験用のEC2サーバは12ヶ月の無料枠で作成できます。
・ただし、有料枠のEC2サーバ上にCisco CSR 1000Vを作成する必要があるますので、EC2の利用料が必要です。
複数ハマった場所がありましたので、以後試す方の参考になればと思います。
今回は、VPC間の接続を行ってみたいと思います。
構成図
VPCの作成
上記の図のように、1VPCに2つのネットワークを作成し、ネットワークアドレスの違う同じ構成のものをもう一つ用意。
CSR1000VのLaunching
それぞれのVPCにCisco CSR 1000V BYOLをLaunchします。
Cisco CSR 1000V BYOLを60日間の試用版で動作します。
作成後、重要なことは2点あります。(Ciscoなどのマニュアルで記載が無く、うっかりしててハマります。)
(1)インターネット側のインターフェイスに設定するSecurity Group(Inbound)の設定に、VPN接続で利用するポートを開けておきます。
sshの他に、udp:500,udp:4500です。最初は通信確認用にICMPも開けても良いと思います。
(2)その際、サーバ側ネットワーク用のインターフェイスを追加します。
マシンが作成できたら、Netwrok Interface で、サーバ側ネットワーク用のインターフェイスの「Source/Dest. Check」を無効にします。
CSR1000Vの設定
ルータへの接続は、EC2サーバと同様です。
% ssh -i <key.pem> ec2-user@<IP.address>
ライセンスレベルの変更
> config t (config)# lisense boot level ? advanced Advanced License Level premium Premium License Level standard Standard License Level (config)# lisense boot level premium Feature Name:prem_eval PLEASE READ THE FOLLOWING TERMS CAREFULLY. INSTALLING THE LICENSE OR LICENSE KEY PROVIDED FOR ANY CISCO PRODUCT FEATURE OR USING SUCH #### 省略 #### so that if you enable a software feature on 1000 devices, you must purchase 1000 licenses for use past the 60 day evaluation period.) Activation of the software command line interface will be evidence of your acceptance of this agreement. ACCEPT? (yes/[no]): yes % use 'write' command to make license boot config take effect on next boot (config)# (config)#exit #write Building configuration... #reload Proceed with reload? [confirm] Connection to x.x.x.123 closed by remote host. Connection to x.x.x.123 closed.
再起動しますが、AWS Management Consoleでステータスエラーになることがありました。AWS Management Console から該当のインスタンスをStop/Startすると復旧しました。
SSHで再ログイン後、ここで念のため、スナップショットを忘れずに・・・
設定に失敗し、ログインできなくなった場合の復旧手段となります。
事前にVolumeでnameを付けておくとわかりやすいです。
コンフィグを一般的なCiscoルータと同様に適応します。
AWSで利用する場合、インターネット側のIPアドレスはDHCP取得となるのが特徴です。
# conf t (config)# hostname csr1kv-1
IPアドレスの設定状況確認
csr1kv-1#sh ip interface brief Interface IP-Address OK? Method Status Protocol GigabitEthernet1 10.1.2.70 YES DHCP up up GigabitEthernet2 unassigned YES unset administratively down down VirtualPortGroup0 10.1.2.70 YES unset down down csr1kv-1#
サーバ側インターフェイスのIPアドレスの設定
csr1kv-1(config)#int Gi 2 csr1kv-1(config-if)#ip address 10.1.1.10 255.255.255.0 csr1kv-1(config-if)#no shutdown csr1kv-1(config-if)#end csr1kv-1#show ip int brief Interface IP-Address OK? Method Status Protocol GigabitEthernet1 10.1.2.70 YES DHCP up up GigabitEthernet2 10.1.1.10 YES NVRAM up up VirtualPortGroup0 10.1.2.70 YES unset down down
IKEの設定
csr1kv-1#conf t Enter configuration commands, one per line. End with CNTL/Z. csr1kv-1(config)#crypto isakmp policy 1 csr1kv-1(config-isakmp)#encryption aes csr1kv-1(config-isakmp)#hash md5 csr1kv-1(config-isakmp)#authentication pre-share csr1kv-1(config-isakmp)#group 2 csr1kv-1(config-isakmp)#lifetime 86400 csr1kv-1(config-isakmp)#exit csr1kv-1(config)#crypto isakmp key aws address #Peer Router IP address# csr1kv-1(config)# end csr1kv-1#conf t Enter configuration commands, one per line. End with CNTL/Z. csr1kv-1(config)#ip access-list extended vpn-traffic csr1kv-1(config-ext-nacl)#permit ip 10.1.1.0 0.0.0.255 10.2.3.0 0.0.0.255 csr1kv-1(config-ext-nacl)#exit csr1kv-1(config)#crypto ipsec transform-set TS esp-aes esp-md5-hmac csr1kv-1(config-crypto-trans)# exit csr1kv-1(config)#
IPsecの設定
csr1kv-1(config)#crypto map cmap 10 ipsec-isakmp csr1kv-1(config-crypto-map)#set peer #Peer Router IP address# csr1kv-1(config-crypto-map)#set transform-set TS csr1kv-1(config-crypto-map)#match address vpn-traffic csr1kv-1(config-crypto-map)#exit csr1kv-1(config)# csr1kv-1(config)#interface Gi 1 csr1kv-1(config-if)#crypto map cmap csr1kv-1(config-if)#exit csr1kv-1#write mem
両方のルータで設定できたらルータで通信確認
送信元をインターフェイスにするのがコツです。
csr1kv-1#ping 10.2.3.10 source gi 2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.2.3.10, timeout is 2 seconds: Packet sent with a source address of 10.1.1.10 !!!!!
サーバ通信確認準備
各ルータ配下のサーバへStatic Routeを設定して通信確認を行います。
Server2での例
[ec2-user@ip-10-2-3-8 ~]$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.2.3.1 0.0.0.0 UG 0 0 0 eth0 10.2.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0 [ec2-user@ip-10-2-3-8 ~]$ sudo route add -net 10.1.1.0/24 gw 10.2.3.10 [ec2-user@ip-10-2-3-8 ~]$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.2.3.1 0.0.0.0 UG 0 0 0 eth0 10.1.1.0 10.2.3.10 255.255.255.0 UG 0 0 0 eth0 10.2.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
[ec2-user@ip-10-1-1-61 ~]$ netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 10.1.1.1 0.0.0.0 UG 0 0 0 eth0 10.1.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 10.2.3.0 10.1.1.10 255.255.255.0 UG 0 0 0 eth0 169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
通信確認結果
正常にCSR1000Vの設定が行えていれば通信ができます。
Server1から、Server2へのPing通信
[ec2-user@ip-10-1-1-61 ~]$ ping 10.2.3.8 PING 10.2.3.8 (10.2.3.8) 56(84) bytes of data. 64 bytes from 10.2.3.8: icmp_seq=1 ttl=62 time=4.16 ms 64 bytes from 10.2.3.8: icmp_seq=2 ttl=62 time=4.02 ms 64 bytes from 10.2.3.8: icmp_seq=3 ttl=62 time=4.15 ms 64 bytes from 10.2.3.8: icmp_seq=4 ttl=62 time=3.93 ms 64 bytes from 10.2.3.8: icmp_seq=5 ttl=62 time=4.04 ms ^C --- 10.2.3.8 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4623ms rtt min/avg/max/mdev = 3.932/4.063/4.160/0.094 ms
Server2から、Server1へのPing通信
[ec2-user@ip-10-2-3-8 ~]$ ping 10.1.1.61 PING 10.1.1.61 (10.1.1.61) 56(84) bytes of data. 64 bytes from 10.1.1.61: icmp_seq=1 ttl=62 time=4.04 ms 64 bytes from 10.1.1.61: icmp_seq=2 ttl=62 time=3.75 ms 64 bytes from 10.1.1.61: icmp_seq=3 ttl=62 time=3.96 ms 64 bytes from 10.1.1.61: icmp_seq=4 ttl=62 time=4.04 ms 64 bytes from 10.1.1.61: icmp_seq=5 ttl=62 time=3.90 ms ^C --- 10.1.1.61 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 4969ms rtt min/avg/max/mdev = 3.759/3.942/4.045/0.126 ms
CSR1000V ルータのVPNステータス確認
Ciscoのshowコマンドで確認します。
show crypt session
show crypt isakmp sa
show crypt ipsec sa
CSR1000v-1
csr1kv-1#show crypto session Crypto session current status Interface: GigabitEthernet1 Session status: UP-ACTIVE Peer: X.X.199.237 port 4500 Session ID: 0 IKEv1 SA: local 10.1.2.70/4500 remote X.X.199.237/4500 Active IPSEC FLOW: permit ip 10.1.1.0/255.255.255.0 10.2.3.0/255.255.255.0 Active SAs: 2, origin: crypto map csr1kv-1# csr1kv-1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status X.X.199.237 10.1.2.70 QM_IDLE 1005 ACTIVE IPv6 Crypto ISAKMP SA csr1kv-1# csr1kv-1#show crypto ipsec sa interface: GigabitEthernet1 Crypto map tag: cmap, local addr 10.1.2.70 protected vrf: (none) local ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0) remote ident (addr/mask/prot/port): (10.2.3.0/255.255.255.0/0/0) current_peer X.X.199.237 port 4500 PERMIT, flags={origin_is_acl,} #pkts encaps: 70, #pkts encrypt: 70, #pkts digest: 70 #pkts decaps: 62, #pkts decrypt: 62, #pkts verify: 62 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 0, #recv errors 0 local crypto endpt.: 10.1.2.70, remote crypto endpt.: X.X.199.237 plaintext mtu 1422, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1 current outbound spi: 0xC9CC9801(3385628673) PFS (Y/N): N, DH group: none inbound esp sas: spi: 0xDDED0C2F(3723299887) transform: esp-aes esp-md5-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2007, flow_id: CSR:7, sibling_flags FFFFFFFF80004048, crypto map: cmap sa timing: remaining key lifetime (k/sec): (4607998/3514) IV size: 16 bytes replay detection support: Y Status: ACTIVE(ACTIVE) inbound ah sas: inbound pcp sas: outbound esp sas: spi: 0xC9CC9801(3385628673) transform: esp-aes esp-md5-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2008, flow_id: CSR:8, sibling_flags FFFFFFFF80004048, crypto map: cmap sa timing: remaining key lifetime (k/sec): (4607998/3514) IV size: 16 bytes replay detection support: Y Status: ACTIVE(ACTIVE) outbound ah sas: outbound pcp sas: csr1kv-1#
CSR1000V-2
csr1kv-2#show crypto session Crypto session current status Interface: GigabitEthernet1 Session status: UP-ACTIVE Peer: X.X.8.84 port 4500 Session ID: 0 IKEv1 SA: local 10.2.4.72/4500 remote X.X.8.84/4500 Active IPSEC FLOW: permit ip 10.2.3.0/255.255.255.0 10.1.1.0/255.255.255.0 Active SAs: 2, origin: crypto map csr1kv-2# csr1kv-2#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status 10.2.4.72 X.X.8.84 QM_IDLE 1005 ACTIVE IPv6 Crypto ISAKMP SA csr1kv-2# csr1kv-2#show crypto ipsec sa interface: GigabitEthernet1 Crypto map tag: cmap, local addr 10.2.4.72 protected vrf: (none) local ident (addr/mask/prot/port): (10.2.3.0/255.255.255.0/0/0) remote ident (addr/mask/prot/port): (10.1.1.0/255.255.255.0/0/0) current_peer X.X.8.84 port 4500 PERMIT, flags={origin_is_acl,} #pkts encaps: 62, #pkts encrypt: 62, #pkts digest: 62 #pkts decaps: 65, #pkts decrypt: 65, #pkts verify: 65 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 0, #recv errors 0 local crypto endpt.: 10.2.4.72, remote crypto endpt.: X.X.8.84 plaintext mtu 1422, path mtu 1500, ip mtu 1500, ip mtu idb GigabitEthernet1 current outbound spi: 0xDDED0C2F(3723299887) PFS (Y/N): N, DH group: none inbound esp sas: spi: 0xC9CC9801(3385628673) transform: esp-aes esp-md5-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2007, flow_id: CSR:7, sibling_flags FFFFFFFF80000048, crypto map: cmap sa timing: remaining key lifetime (k/sec): (4607998/3514) IV size: 16 bytes replay detection support: Y Status: ACTIVE(ACTIVE) inbound ah sas: inbound pcp sas: outbound esp sas: spi: 0xDDED0C2F(3723299887) transform: esp-aes esp-md5-hmac , in use settings ={Tunnel UDP-Encaps, } conn id: 2008, flow_id: CSR:8, sibling_flags FFFFFFFF80000048, crypto map: cmap sa timing: remaining key lifetime (k/sec): (4607998/3514) IV size: 16 bytes replay detection support: Y Status: ACTIVE(ACTIVE) outbound ah sas: outbound pcp sas: csr1kv-2#